<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>
relish programming language
</title>

<meta name="keywords" content="relish programming language web application development framework persistence" />
 <meta name="description" content="Home page for relish(TM), an application programming language which includes a simple full-stack web application framework and transparent persistence. Focus is on simplicity and minimalism via very strict enforcement of conventions. The name comes from the language's inbuilt construct of relations between datatypes. A programmer can express an entity-relation model of the application domain directly in the language then associate instances. Methods are owned by tuples of datatypes, and are dispatched by multi-argument multimethod dispatch.
relish is implemented in Go, and inherits/wraps some Go features like goroutine concurrency and channels, but is almost entirely unlike Go in language constructs and philosophy." />
 

 <link rel="stylesheet" type="text/css" id="stylesheet"
       href="/styles/default.css" />


</head>
<body>
  <div id="header">	
  <table>
	<tr>
	  <td>	
        <a href="/"><img src="/relish_logo4_small.png"></a>
      </td>
	  <td>	
         &nbsp; &nbsp;
      </td>
	  <td>	
        <h1><a href="/">relish<span class="trademark">&#8482;</span></a></h1>
      </td>
	  <td style="width: 4em">	
         &nbsp; &nbsp;
      </td>
	  <td>	
        <h2>The relish Programming Language</h2>
      </td>
    </tr>
  </table>
  </div>
  <a id="tutorials_button" class="menubutton" href="/tutorials/">
	Tutorials
  </a>
  <a id="references_button" class="menubutton" href="/references/">
	References
  </a>
  <a id="packages_button" class="menubutton" href="/packages/">
	Packages
  </a>
  <a id="shared_button" class="menubutton" href="http://shared.relish.pl">
	Artifacts
  </a>  
  <a id="download_button" class="menubutton" href="/download/">
	DOWNLOAD
  </a>	
  <!-- <div id="download_button" class="menubutton" onclick="location='/download/'">
	DOWNLOAD
  </div> -->

<div id="content">	
<table>	
	<tr>
		<td class="contentside">
<div id="content_left">
	<h3>Why you might want to program with relish</h3>
	<dl>
		<dt>the language is simple</dt> 
		<dd>and should be easy to learn by example</dd>
		
		<dt>easy to read programs</dt> 
		<dd>relish programs are all alike in their structure and layout and are always properly indented - oh and commenting is enforced</dd>
		
		<dt>start building a web application immediately</dt> 
		<dd>without worrying about complications like getting data into and out of a database, and without having to configure much of anything.</dd>
		
		<dt>find and incorporate other code easily</dt> 
		<dd>relish can download the proper versions of code libraries your program is dependent on automatically from the Internet - and all relish code comes with source code.</dd>
		
		<dt>model your domain quickly</dt> 
		<dd>and in one simple class-definition syntax which works for both data structures in memory and data stored in the database. Specify relationships between types of data right in the programming language.</dd>
		
		<dt>advanced programming features</dt> 
	    <dd>if you are advanced in programming, you may appreciate advanced features like multiple inheritance, methods which are selected by best-matching the types of all of their arguments, lightweight threads with communication channels, and closures. </dd>
	</dl>		

	<h3>Technical Summary of Features</h3>
	<p>
	relish&#8482; is an application programming language which includes a simple full-stack web application framework and transparent persistence. Focus is on simplicity and minimalism via very strict enforcement of conventions. The name 'rel'ish  comes from the language's inbuilt support of relations between datatypes. A programmer can define an entity-relation model in the language, then with concise syntax can associate objects according to the model relations, and conveniently traverse the network of related objects. Methods are owned by tuples of datatypes, and are dispatched by multi-argument multimethod dispatch.
	</p>
	<p>
	relish is implemented in Go, and inherits/wraps some Go features like goroutine concurrency and channels, but is almost entirely unlike Go in language constructs and philosophy.
	</p>
</div>
</td>
<td class="contentside">
<div id="content_right">
	The relish compiler-interpreter is free software licensed with GPL version 3 and libraries for programmers are licensed with LGPL v3, meaning that programs written in relish need not themselves be licensed compatibly with the GPL. However, the relish runtime environment will only execute programs which have their source code present in a standard location. If you are distributing code written in relish, you must distribute its source code. 
</div>
</td>
</tr>
</table>	
</div>
</body>
</html>